///@file NodeGroup.h
///@brief Declaration of the class managing a group of nodes
///@author Arnaud Duval
///@version 0.0
///@date 2011/03/03


#ifndef NODEGROUP_H
#define NODEGROUP_H

#include <string>
#include <list>
#include "Node.h"

///@class NodeGroup
///@brief Class defining a group of nodes
class NodeGroup
{
    private:
        ///@brief Name of the group
        std::string name;
        ///@brief A list of pointers to the nodes contained in the group
        std::list<Node*> nodes;
      

    protected:

    public:
        ///@brief Default constructor
        NodeGroup();
        ///@brief Constructor specifying the name of the group
        NodeGroup(std::string);
        ///@brief destructor
        ~NodeGroup();
        ///@brief Add a Node to the group
        void AddNode(Node*);
        ///@brief Remove a Node from the group
        void RemoveNode(Node*);
        ///@brief Return the name of the group
        std::string GetName();

        ///@brief Overload of << operator
        friend std::ostream& operator << (std::ostream&, const NodeGroup&);
};


#endif